package com.skyline.user.service;

import java.util.List;

import com.skyline.base.type.IdolType;
import com.skyline.common.bean.Page;
import com.skyline.user.model.Fan;

public interface AttentionService {

	/**
	 * payAttention 添加关注函数
	 * @param idolId 被关注者 即你的偶像
	 * @param idolNickname
	 * @param idolPortrait
	 * @param fanId 用户自己
	 * @param fanNickname
	 * @param fanPortrait
	 * @param idolType 被关注者的类型 
	 */
	public void payAttention(Long idolId, String idolNickname, String idolPortrait, Long fanId, String fanNickname,
			String fanPortrait, IdolType idolType);

	/**
	 * 根据用户ID和关注的类型筛选用户的关注
	 * @param fanId
	 * @param idolType
	 * @return
	 */
	public List<Fan> queryAttentionByType(Long fanId, IdolType idolType,Page page);

	/**
	 * 根据用户ID和关注的类型筛选用户的关注
	 * @param fanId
	 * @param idolType
	 * @return
	 */
	public List<Fan> queryAttentionByType(Long fanId, IdolType idolType);
	/**
	 * 根据用户ID筛选粉丝
	 * @param idolId
	 * @return
	 */
	public List<Fan> queryFans(Long idolId,Page page);

	/**
	 * 取消关注
	 * @param fanId
	 * @param idolId
	 */
	public void cancelAttention(Long idolId, Long fanId);

	/**
	 * 判断是不是关注关系
	 * @param idolId
	 * @param fanId
	 * @return
	 */
	public boolean isFan(Long idolId, Long fanId);
	/**
	 * 判断是否相互关注
	 * @param idolId
	 * @param fanId
	 * @return
	 */
	public boolean isFanEachOther(Long idolId,Long fanId);

	/**
	 * 计算粉丝数
	 * @param idolId
	 * @return
	 */
	public int countFans(Long idolId);

	/**
	 * 根据类型计算关注个数
	 * @param fanId
	 * @param idolType
	 * @return
	 */
	public int countAttentionByType(Long fanId, IdolType idolType);
}
